package com.cs.beneficios.common.entity;

import com.cs.beneficios.business.model.Subprograma;
import com.cs.beneficios.business.model.ValorFlexibleVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.common.util.Atributo;
import com.cs.beneficios.validator.Validaciones;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;

import java.util.LinkedList;
import java.util.List;


public class Consultas {
	private Connection conn = null;
	private ConnectionFactory cf;

	public Consultas(ConnectionFactory cf) {
		this.cf = cf;
		try {
			this.conn = this.cf.getConnection();
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}
	}

	//       public ResultSet getConsulProg(Long codeuser, Long codeusergroup,String strPgr, String strarea){
	//    
	//      String strSql = null; 
	//      ResultSet rs = null;
	//      String strPar[] =  new String[1];
	//      
	//      if(strPgr.equalsIgnoreCase("") && strarea.equalsIgnoreCase("")){
	//           
	//           strSql = " select  upper(pro.nombre) Programa, pro.codigo Codigo, pro.area_codigo Area "+
	//                    " from tcs_ben_programa pro, paoyer.tcs_usuario usu, "+
	//                    " paoyer.tcs_grupo_usuario gus "+
	//                    " where pro.USU_CODIGO = usu.CODIGO "+
	//                    " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, sysdate) = 'A' "+
	//                    " and (gus.CODIGO = 33 or gus.CODIGO = 128) and ("+codeusergroup+" = 33 or "+codeusergroup+" = 128 or usu_codigo = "+codeuser+") ";
	//           
	//                      
	//           /* strSql = " SELECT  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area"+
	//                     " FROM TCS_BEN_PROGRAMA pgr "+
	//                     " WHERE vigencia <> 'I' ";*/
	//             try{      
	//             rs = cf.getRecordsRset(strSql,null,conn);
	//             }
	//            catch(SQLException e){
	//             e.printStackTrace();
	//            }   
	//          return rs;
	//      }else{
	//          if(strarea.equalsIgnoreCase("")){
	//            //try{
	//               Validaciones validacion = new Validaciones(cf);
	//               boolean existe = validacion.validaprog(strPgr);
	//                if(existe){
	//                
	//                strSql = " SELECT pro.codigo Codigo, UPPER(pro.nombre) Programa, pro.area_codigo Area "+
	//                         " FROM TCS_BEN_PROGRAMA pro, tcs_ben_area area, paoyer.tcs_usuario usu, "+
	//                         " paoyer.tcs_grupo_usuario gus "+
	//                         " WHERE pro.area_codigo = area.codigo and pro.USU_CODIGO = usu.CODIGO "+
	//                         " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, "+
	//                         " SYSDATE) = 'A' AND (gus.CODIGO = 33 or gus.CODIGO = 128) "+
	//                         " AND ("+codeusergroup+" = 33 OR "+codeusergroup+" = 128 OR usu_codigo = "+codeuser+") AND UPPER(pro.nombre) LIKE UPPER(?) ";
	//                
	//                           
	//                /*   strSql = " Select  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area "+
	//                            " from TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area "+
	//                            " where pgr.area_codigo = area.codigo and pgr.vigencia <> 'I' AND upper(pgr.nombre) like upper(?) ";*/
	//                            
	//                String strprograma = "%"+strPgr+"%";
	//                strPar[0] = strprograma;
	//                }else{
	//                  return rs;
	//                } 
	//                //cf.closeConnection(validacion.getConn());
	//           /* }catch(SQLException e)
	//            {
	//              e.printStackTrace();
	//            }*/
	//        }else{
	//        
	//             strSql = " SELECT pro.codigo Codigo, UPPER(pro.nombre) Programa, pro.area_codigo Area "+
	//                      " FROM TCS_BEN_PROGRAMA pro, paoyer.tcs_usuario usu, "+
	//                      " paoyer.tcs_grupo_usuario gus, TCS_BEN_AREA area "+
	//                      " WHERE pro.USU_CODIGO = usu.CODIGO  AND pro.AREA_CODIGO = area.CODIGO "+
	//                      " AND Fcs_Ben_Val_Vigencia(pro.VIGENCIA, pro.DESDE_VIGENCIA, pro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	//                      " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+codeusergroup+" = 33 OR "+codeusergroup+" = 128 OR usu_codigo = "+codeuser+") AND area.codigo = ? ";
	//        
	//             /* strSql = " SELECT  pgr.nombre Programa, pgr.codigo Codigo, pgr.area_codigo Area "+
	//                       " FROM TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area "+
	//                       " WHERE pgr.AREA_CODIGO = area.CODIGO AND pgr.vigencia <> 'I' AND area.codigo = ? ";*/
	//           
	//              strPar[0] = strarea;
	//          }
	//        }
	//        try{      
	//           rs = cf.getRecordsRset(strSql,strPar,conn);
	//           }
	//          catch(SQLException e){
	//           e.printStackTrace();
	//          }   
	//     
	//       return rs;
	//  
	//  }

	 //   public ResultSet getConsSubprog(Long codeuser, Long groupuser, String strsub, String strpgr, String strsecretaria)
	 //    {
	 //     
	 //     String strSql = null; 
	 //     ResultSet rs = null;
	 //     String strPar[] =  new String[1];
	 //   
	 //  if (strsub.equalsIgnoreCase("") && strpgr.equalsIgnoreCase("") && strsecretaria.equalsIgnoreCase("")){  
	 //      
	 //      strSql = " SELECT UPPER(subpro.nombre) Subprograma,  subpro.codigo Codigo "+
	 //               " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, "+
	 //               " paoyer.tcs_grupo_usuario gus "+
	 //               " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	 //               " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	 //               " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") ";
	 //            
	 //      /* strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	 //                " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	 //                " WHERE area.CODIGO = pgr.AREA_CODIGO AND pgr.CODIGO = subpgr.PRG_CODIGO AND subpgr.vigencia <> 'I' "; */
	 //        
	 //            try{      
	 //               rs = cf.getRecordsRset(strSql,null,conn);
	 //               }
	 //              catch(SQLException e){
	 //               e.printStackTrace();
	 //             }   
	 //      return rs;
	 //      
	 //   }else{   
	 //       if (strpgr.equalsIgnoreCase("") && strsecretaria.equalsIgnoreCase("")) {
	 //        try{ 
	 //          Validaciones validacion = new Validaciones(cf);
	 //          boolean existe = validacion.validasubprg(strsub);
	 //           
	 //           if(existe){
	 //           
	 //                strSql = " SELECT  UPPER(subpro.nombre) Subprograma, subpro.codigo Codigo "+
	 //                         " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gus "+
	 //                         " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	 //                         " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	 //                         " AND (gus.CODIGO = 33 OR gus.CODIGO = 128)"+
	 //                         " AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") AND  UPPER(subpro.NOMBRE) LIKE UPPER(?)";
	 //                  
	 //                /* strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	 //                          " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	 //                          " WHERE area.CODIGO = pgr.AREA_CODIGO AND pgr.CODIGO = subpgr.PRG_CODIGO  "+
	 //                          " AND subpgr.vigencia <> 'I' AND  UPPER(subpgr.NOMBRE) like upper(?) "; */
	 //                  
	 //                  String strsubprog = "%"+strsub+"%"; 
	 //                  strPar[0] = strsubprog;
	 //              }else{
	 //              return rs;
	 //            }   
	 //          cf.closeConnection(validacion.getConn());
	 //        }catch(SQLException e)
	 //        {
	 //          e.printStackTrace();
	 //        }
	 //      }else{        
	 //            if (strsub.equalsIgnoreCase("") && strsecretaria.equalsIgnoreCase("")){
	 //                
	 //               strSql = " SELECT  UPPER(subpro.nombre) Subprograma, subpro.codigo Codigo "+
	 //                        " FROM TCS_BEN_SUBPROGRAMA subpro, paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gus "+
	 //                        " WHERE subpro.USU_CODIGO = usu.CODIGO "+
	 //                        " AND Fcs_Ben_Val_Vigencia(subpro.VIGENCIA, subpro.DESDE_VIGENCIA, subpro.HASTA_VIGENCIA, SYSDATE) = 'A' "+
	 //                        " AND (gus.CODIGO = 33 OR gus.CODIGO = 128) AND ("+groupuser+" = 33 OR "+groupuser+" = 128 OR usu_codigo = "+codeuser+") "+
	 //                        " AND subpro.PRG_CODIGO = ?  ";
	 //                
	 //                /*strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	 //                     " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	 //                     " WHERE subpgr.PRG_CODIGO = pgr.CODIGO   AND area.CODIGO = pgr.AREA_CODIGO  "+
	 //                     "  AND SUBPGR.vigencia <> 'I' AND pgr.CODIGO = ? "; */
	 //                     
	 //                 strPar[0] = strpgr;
	 //             }else{ 
	 //                
	 //                  strSql = " SELECT subpgr.NOMBRE Subprograma, subpgr.codigo Codigo "+
	 //                           " FROM TCS_BEN_AREA area, TCS_BEN_PROGRAMA pgr, TCS_BEN_SUBPROGRAMA subpgr "+
	 //                           " WHERE subpgr.PRG_CODIGO = pgr.CODIGO  AND pgr.AREA_CODIGO = area.CODIGO AND "+
	 //                           " subpgr.vigencia <> 'I' AND area.CODIGO = ? ";
	 //                       
	 //                  strPar[0] = strsecretaria;
	 //                
	 //                
	 //               }  
	 //          }
	 //     }  
	 //        try{      
	 //           rs = cf.getRecordsRset(strSql,strPar,conn);
	 //           }
	 //          catch(SQLException e){
	 //           e.printStackTrace();
	 //          }   
	 //          
	 //        return rs;
	 //  }

	public ResultSet getDetPrograma(String strcodigo) {
		String strSql = 
			" SELECT pgr.NOMBRE Nombre, nvl(pgr.OBJETIVO,' ') Objetivo, " + " nvl(pgr.DESCRIPCION,' ') Descripcion, nvl(area.NOMBRE,' ') Area, " + 
			" usu.codigo codusu, usu.NOMBRE Usuario, nvl(pgr.POBLACION_OBJETIVO,' ') Poblacion, " + 
			" nvl(to_char(pgr.desde_vigencia,'yyyy-mm-dd'),'nulo') Desde, " + 
			" nvl(to_char(pgr.hasta_vigencia,'yyyy-mm-dd'),'nulo')  Hasta, nvl(pgr.VIGENCIA,' ') Vigencia " + 
			" FROM TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area, paoyer.tcs_usuario usu " + 
			" WHERE pgr.AREA_CODIGO = area.CODIGO " + " AND pgr.USU_CODIGO = usu.CODIGO " + " AND pgr.CODIGO = ? ";

		String strPar[] = { strcodigo };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getDetSubpgr(String strsubpgr) {
		String strSql = 
			" SELECT subpgr.nombre subprograma, pgr.NOMBRE programa,area.codigo codsecr, area.NOMBRE secretaria, nvl(subpgr.DESCRIPCION,' ') descripcion, " + 
			" nvl(TO_CHAR(subpgr.DIAS_REUTILIZAR),' ') utilizacion, nvl(subpgr.VALOR_UNITARIO_BENEFICIO,'0') valor, " + 
			" nvl(to_char(subpgr.desde_vigencia,'yyyy-mm-dd'),'nulo') desde, nvl(to_char(subpgr.hasta_vigencia,'yyyy-mm-dd'),'nulo') hasta, " + 
			" subpgr.grupo_familiar grupo, subpgr.validar_contra_estud estudiantes, " + 
			" subpgr.validar_contra_sisben sisben,  subpgr.VIGENCIA vigencia, usu.codigo codadmin, usu.NOMBRE usuario, " + 
			" subpgr.area_codigo subsecretaria,nvl(subpgr.CAMPO_A3,' ') renovar " + 
			" FROM TCS_BEN_SUBPROGRAMA subpgr, TCS_BEN_PROGRAMA pgr, TCS_BEN_AREA area, paoyer.tcs_usuario usu " + 
			" WHERE area.CODIGO = pgr.AREA_CODIGO AND usu.CODIGO = subpgr.USU_CODIGO " + 
			" AND pgr.CODIGO = subpgr.PRG_CODIGO AND subpgr.codigo = ? ";


		String strPar[] = { strsubpgr };
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getDetSede(String strSede) {
		String strSql = 
			" SELECT sede.Nombre nombre, NVL(sede.Descripcion,' ') descripcion,  " + " nvl(sede.tipo,' ') tipo, nvl(sede.caracter,' ') car, " + 
			" vfl_codigo_municipio.CODIGO  Municipio, nvl(sede.Direccion_Descriptiva,' ') dirdescrip, " + 
			" sede.Direccion_Encasillada direncas,nvl(sede.localizacion_cobama,' ')cobama, " + 
			" nvl(to_char(sede.desde_vigencia,'yyyy-mm-dd'),'nulo') desde, " + 
			" nvl(to_char(sede.hasta_vigencia,'yyyy-mm-dd'),'nulo') hasta, sede.vigencia vig " + 
			" FROM TCS_BEN_SEDE sede, paoyer.tcs_valor_flexible vfl_codigo_municipio " + 
			" WHERE sede.VFL_CODIGO_MUNICIPIO = vfl_codigo_municipio.CODIGO AND sede.codigo = ? ";


		String strPar[] = { strSede };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}
		return rs;
	}

	public ResultSet getNomPrograma() {
		String strSql = 
			"select codigo, area_codigo, nombre from tcs_ben_programa " + "where vigencia <> 'I' order by nombre";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNamePrograma(Long codeUser, String groupUserName, Long areaUser) {
		String query = 
			"select DISTINCT COD_PROGRAMA, NOM_PROGRAMA, DESC_PROGRAMA, OBJETIVO, POBLACION_OBJETIVO, COD_AREA, NOM_AREA, COD_USUARIO, NOM_USUARIO  from VCS_BEN_PROG_WITHOUT_USUSEDE  ";

		if ((Object)codeUser != null) {
			query += 
					" where ('ADMINISTRADOR GENERAL' = '" + groupUserName + "' OR 'SUPER USUARIO' = '" + groupUserName + 
					"' or admSubpro = " + codeUser + "          or admProg = " + codeUser;
			if (groupUserName != null && groupUserName.equals("ADMINISTRADOR SECRETARIA")) {
				query += " or COD_AREA = " + areaUser;
			}
			query += " ) ";
		}

		query += " order by NOM_PROGRAMA";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(query, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomSecretaria() {
		String strSql = "select codigo, nombre from tcs_ben_area where area_codigo is null ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomSubsecretaria(String strcodsecret) {
		String strSql = " SELECT codigo, nombre " + " FROM TCS_BEN_AREA " + " WHERE  area_codigo = ? ";
		String strPar[] = { strcodsecret };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getcodsecret(String strcodprog) {
	   String strSql = 
			" SELECT PRG.area_codigo area_codigo, AREA.nombre nombre" + " FROM TCS_BEN_PROGRAMA PRG, TCS_BEN_AREA  AREA" + 
			" WHERE prg.area_codigo = area.codigo and prg.codigo = ? ";
		String strPar[] = { strcodprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getUsuAdmin(String strusu) {
		ResultSet rs = null;
		String codUsu = "%" + strusu + "%";
		String strPar[] = { codUsu, codUsu };
		String strSql =
				"SELECT usu.codigo codigo, usu.nombre usuario, usu.descripcion nombre\n" + 
				"FROM paoyer.tcs_usuario usu, paoyer.tcs_grupo_usuario gusu\n" + 
				"WHERE usu.gus_codigo = gusu.codigo\n" + 
				"	AND fcs_val_vigencia(usu.vigencia, usu.desde_vigencia, usu.hasta_vigencia) = 'S'\n" + 
				"	AND usu.campo_a1 IS NULL\n" + 
				"	AND (usu.nombre LIKE upper(?) OR usu.descripcion LIKE upper(?))";

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getsedes(String strsede) {
		ResultSet rs = null;
		String strSql = null;
		String strSede = "%" + strsede + "%";
		String strPar[] = { strSede };
		Validaciones validacion = new Validaciones(cf);

		try {
			if (validacion.validasede(strsede)) {
				strSql = 
						" SELECT codigo,nombre FROM TCS_BEN_SEDE WHERE UPPER(nombre) " + " LIKE UPPER(?) AND vigencia <> 'I' ";
				rs = cf.getRecordsRset(strSql, strPar, conn);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			try {
				cf.closeConnection(validacion.getConn());
			}
			catch (SQLException e) {
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
			}
		}

		return rs;
	}

	public ResultSet getActivarSub() {
		String strSql = "select nombre, codigo from tcs_ben_subprograma where vigencia = 'I' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getMunicipios() {
		String strSql = " SELECT nombre,codigo " + " FROM paoyer.TCS_VALOR_FLEXIBLE " + " WHERE campo_a1 = '05' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public int getActivarSub2(String[] param) {
		String strSql = 
			"update tcs_ben_subprograma " + " set vigencia = 'A', comentario = '', hasta_vigencia=hasta_vigencia+TO_NUMBER(hasta_vigencia-desde_vigencia), " + 
			" USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), " + " TERMINAL_MODIFICA = ? " + 
			" where codigo = ? ";
		int modificar = 0;

		try {
			modificar = cf.execSql(strSql, param, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return modificar;
	}

	public int getActivarPro2(String[] param) {
		String strSql = 
			"update tcs_ben_programa set vigencia = 'A' , comentario = '', " + " USUARIO_MODIFICA = ?, FECHA_MODIFICA = to_date(?,'dd/mm/yyyy'), " + 
			" TERMINAL_MODIFICA = ? " + " where codigo = ? ";
		int modificar = 0;

		try {
			modificar = cf.execSql(strSql, param, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return modificar;
	}

	public ResultSet getNomsubprg(String strcodsub) {
		String strSql = "select  nombre from tcs_ben_subprograma where codigo = ? ";
		String strPar[] = { strcodsub };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getNomPrg(String strcodpro) {
		String strSql = "select  nombre from tcs_ben_programa where codigo = ? ";
		String strPar[] = { strcodpro };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getActivarProg() {
		String strSql = "select nombre, codigo from tcs_ben_programa where vigencia = 'I' ";
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getActivarsub1(String strcodprog) {
		String strSql = 
			"SELECT sub.nombre nombre, sub.codigo codigo " + " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog " + 
			" WHERE sub.PRG_CODIGO = prog.CODIGO AND prog.codigo = ? ";
		String strPar[] = { strcodprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public ResultSet getInfoact(String strsubprog) {
		String strSql = 
			" SELECT  sub.PRG_CODIGO codprog,prog.NOMBRE programa, sub.nombre subprograma" + " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog " + 
			" WHERE prog.VIGENCIA = 'I' AND sub.PRG_CODIGO = prog.CODIGO " + " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public boolean valProgActivo(String strsubprg) {
		String strSql = 
			" SELECT prog.NOMBRE programa, sub.nombre subprograma" + " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog " + 
			" WHERE prog.VIGENCIA = 'I' AND sub.PRG_CODIGO = prog.CODIGO " + " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprg };
		ResultSet rs = null;
		boolean exists = false;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
			if (rs.next()) {
				exists = true;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try {
					rs.close(); 
				} catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return exists;
	}

	public ResultSet getInfoact2(String strsubprog) {
		String strSql = 
			" SELECT prog.NOMBRE programa, sub.nombre subprograma " + " FROM TCS_BEN_SUBPROGRAMA sub, TCS_BEN_PROGRAMA prog  " + 
			" WHERE  sub.PRG_CODIGO = prog.CODIGO " + " AND sub.CODIGO = ? ";
		String strPar[] = { strsubprog };
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSql, strPar, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return rs;
	}

	public String Nombre(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT ETIQUETA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO=" + Codigo + " ";
		String NombreAtri = null;
		ResultSet rs = null;

		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				NombreAtri = rs.getString("ETIQUETA");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null)  {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/"); 
				}
			}
		}

		return NombreAtri;
	}

	public int ObtenerCodAtriEspe(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT CAMPO_A1 FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO=" + Codigo + " ";
		int iCod = 0;
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				iCod = rs.getInt("CAMPO_A1");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null)  {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/"); 
				}
			}
		}

		return iCod;
	}

	public int getlistaGeneral(String strCod) {
		int Codigo = Integer.parseInt(strCod.trim());
		String strSQL = "SELECT CODIGO FROM TCS_BEN_ATR_GENERICO " + "WHERE TTVF_CODIGO_DOMINIO=" + Codigo + " ";
		int iCod = 0;
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			if (rs.next()) iCod = 1;
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null)  {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/"); 
				}
			}
		}

		return iCod;
	}

	public List getAtributoGenerico(String codsub) {
		int validar = ValidarEstudiante(codsub);
		int subprograma = Integer.parseInt(codsub.trim());
		List listaAtri = new LinkedList();
		String strSQL = "";

		if (validar == 1) {
			strSQL = 
					"SELECT GEN.NOMBRE ATGNOMBRE, GEN.CODIGO ATGCODIGO, GEN.ETIQUETA ATGETIQUETA " + "FROM TCS_BEN_ATR_GENERICO GEN " + 
					"WHERE  " + "GEN.NOMBRE NOT IN (SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO " + 
					"WHERE SBPR_CODIGO = " + subprograma + ") ORDER BY GEN.ORDEN";
		} else {
			strSQL = 
					"SELECT GEN.NOMBRE ATGNOMBRE, GEN.CODIGO ATGCODIGO, GEN.ETIQUETA ATGETIQUETA " + "FROM TCS_BEN_ATR_GENERICO GEN " + 
					"WHERE  " + "GEN.NOMBRE NOT IN (SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO " + 
					"WHERE SBPR_CODIGO = " + subprograma + ") " + "AND (CAMPO_A2 IS NULL or CAMPO_A2 = 'S')  " + 
					"ORDER BY GEN.ORDEN";
		}

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Atributo a = new Atributo();
				a.setCodigo(rs.getString("ATGCODIGO"));
				a.setNombre(rs.getString("ATGNOMBRE"));
				a.setEtiqueta(rs.getString("ATGETIQUETA"));
				listaAtri.add(a);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null)  {
				try { rs.close(); } catch (SQLException e) { 
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaAtri;
	}

	public int ValidarEstudiante(String codsubpro) {
		int retorno = 0;
		int subprograma = Integer.parseInt(codsubpro.trim());
		String strSQL = 
			"SELECT NOMBRE FROM TCS_BEN_SUBPROGRAMA WHERE CODIGO=" + subprograma + " " + "AND VALIDAR_CONTRA_ESTUD='S'";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			if (rs.next()) {
				retorno = 1;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null)  {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/"); 
				}
			}
		}

		return retorno;
	}

	public List getAtributoEspecificos(String strSubprograma) throws SQLException {
		int sub = Integer.parseInt(strSubprograma.trim());
		List listaAtriEsp = new LinkedList();
		String strSQL = 
				"SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, " + "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, " + 
				"DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO " + 
				"FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + sub + " " + "ORDER BY ORDEN";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Atributo a1 = new Atributo();
				int res = rs.getInt("TTVF_CODIGO_DOMINIO");
				if (res != 0) {
					a1.setTipovalorflex(rs.getString("TTVF_CODIGO_DOMINIO"));
				} else {
					a1.setTipovalorflex("");
				}

				a1.setCodigo(rs.getString("CODIGO"));
				a1.setNombre(rs.getString("NOMBRE"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setOrden(rs.getString("ORDEN"));
				a1.setRestriccion(rs.getString("REST_CODIGO"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				if (a1.getValLista().equals("S")) {
					a1.setValListaDesc("Si");
				} else {
					a1.setValListaDesc("No");
				}
				a1.setLongitud(rs.getString("LONGITUD"));

				a1.setObligatorio(rs.getString("OBLIGATORIO"));
				if (a1.getObligatorio().equals("S")) {
					a1.setObligarioDesc("Si");
				} else {
					a1.setObligarioDesc("No");
				}

				a1.setTipoatributo(rs.getString("TIPO_ATRIBUTO"));
				if (a1.getTipoatributo().equals("R")) {
					a1.setTipoatributoDesc("Beneficiario");
				} else {
					a1.setTipoatributoDesc("Beneficio");
				}

				a1.setValorsugerido(rs.getString("VALOR_SUGERIDO"));
				a1.setVigencia(rs.getString("VIGENCIA"));
				if (a1.getVigencia().equals("A")) {
					a1.setVigenciaDesc("Activo");
				} else {
					a1.setVigenciaDesc("Inactivo");
				}

				a1.setTipodato(rs.getString("TIPO_DATO"));
				if (a1.getTipodato().equals("A")) {
					a1.setTipodatoDesc("Alfanumerico");
				} else {
					if (a1.getTipodato().equals("F")) {
						a1.setTipodatoDesc("Fecha");
					} else {
						if (a1.getTipodato().equals("N")) {
							a1.setTipodatoDesc("Numérico");
						} else {
							a1.setTipodatoDesc("Solo Letras (A-Z)");
						}
					}

				}
				a1.setDescripcion(rs.getString("DESCRIPCION"));

				listaAtriEsp.add(a1);
			}
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaAtriEsp;
	}

	public List getAtributoEspecificos(String strSubprograma, int opcion) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSQL;
		List listaAtriEsp = new LinkedList();

		if (opcion != 1) {
			strSQL = 
					"SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, " + "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, " + 
					"DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO " + 
					"FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO=" + sub + " ";
		} else {
			strSQL = 
					"SELECT CODIGO, TIPO_ATRIBUTO, NOMBRE, nvl(REST_CODIGO,'0') REST_CODIGO, ORDEN, LONGITUD, " + "OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, VIGENCIA, " + 
					"DESCRIPCION, TIPO_DATO, TTVF_CODIGO_DOMINIO " + 
					"FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + sub + " " + 
					"AND VIGENCIA = 'A' ORDER BY ORDEN";
		}

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				int res = rs.getInt("TTVF_CODIGO_DOMINIO");
				if (res != 0) {
					a1.setTipovalorflex(rs.getString("TTVF_CODIGO_DOMINIO"));
				} else {
					a1.setTipovalorflex("");
				}


				a1.setCodigo(rs.getString("CODIGO"));
				a1.setNombre(rs.getString("NOMBRE"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setOrden(rs.getString("ORDEN"));
				a1.setRestriccion(rs.getString("REST_CODIGO"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				if (a1.getValLista().equals("S")) {
					a1.setValListaDesc("Si");
				} else {
					a1.setValListaDesc("No");
				}
				a1.setLongitud(rs.getString("LONGITUD"));

				a1.setObligatorio(rs.getString("OBLIGATORIO"));
				if (a1.getObligatorio().equals("S")) {
					a1.setObligarioDesc("Si");
				} else {
					a1.setObligarioDesc("No");
				}

				a1.setTipoatributo(rs.getString("TIPO_ATRIBUTO"));
				if (a1.getTipoatributo().equals("R")) {
					a1.setTipoatributoDesc("Beneficiario");
				} else {
					a1.setTipoatributoDesc("Beneficio");
				}

				a1.setValorsugerido(rs.getString("VALOR_SUGERIDO"));
				a1.setVigencia(rs.getString("VIGENCIA"));
				if (a1.getVigencia().equals("A")) {
					a1.setVigenciaDesc("Activo");
				} else {
					a1.setVigenciaDesc("Inactivo");
				}

				a1.setTipodato(rs.getString("TIPO_DATO"));
				if (a1.getTipodato().equals("A")) {
					a1.setTipodatoDesc("Alfanumerico");
				} else {
					if (a1.getTipodato().equals("F")) {
						a1.setTipodatoDesc("Fecha");
					} else {
						if (a1.getTipodato().equals("N")) {
							a1.setTipodatoDesc("Numérico");
						} else {
							a1.setTipodatoDesc("Solo Letras (A-Z)");
						}
					}

				}
				a1.setDescripcion(rs.getString("DESCRIPCION"));

				listaAtriEsp.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaAtriEsp;
	}

	public List getSubprogramas() {
		List listaSubpro = new LinkedList();
		String strSQL = 
			"SELECT CODIGO, PRG_CODIGO, NOMBRE, VFL_CODIGO_CATEGORIA, " + "DESCRIPCION, DIAS_REUTILIZAR, GRUPO_FAMILIAR, VALIDAR_CONTRA_ESTUD, " + 
			"VALIDAR_CONTRA_SISBEN, DIRECCION_BEN_OBLIGATORIA, " + 
			"nvl(VALOR_UNITARIO_BENEFICIO,0) VALOR_UNITARIO_BENEFICIO, DESDE_VIGENCIA, HASTA_VIGENCIA, " + 
			"VIGENCIA FROM TCS_BEN_SUBPROGRAMA";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				Subprograma sub = new Subprograma();
				sub.setCodigo(rs.getString("CODIGO"));
				sub.setPrgcodigo(rs.getString("PRG_CODIGO"));
				sub.setNombre(rs.getString("NOMBRE"));
				sub.setVflcodigocategsub(rs.getString("VFL_CODIGO_CATEGORIA"));
				sub.setDescripcion(rs.getString("DESCRIPCION"));
				sub.setDiasreutilizar(rs.getString("DIAS_REUTILIZAR"));
				sub.setGrupofamiliar(rs.getString("GRUPO_FAMILIAR"));
				sub.setValidarestudiante(rs.getString("VALIDAR_CONTRA_ESTUD"));
				sub.setValidarsisben(rs.getString("VALIDAR_CONTRA_SISBEN"));
				sub.setDireccionbenoblig(rs.getString("DIRECCION_BEN_OBLIGATORIA"));
				sub.setValorunitario(rs.getString("VALOR_UNITARIO_BENEFICIO"));
				sub.setDesde(rs.getString("DESDE_VIGENCIA"));
				sub.setHasta(rs.getString("HASTA_VIGENCIA"));
				sub.setVigencia(rs.getString("VIGENCIA"));

				listaSubpro.add(sub);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaSubpro;
	}

	public List getDominio(String tipovfl) {
		int dominio = Integer.parseInt(tipovfl.trim());
		List listaDominio = new LinkedList();

		String strSQL = 
			"SELECT TCS_VALOR_FLEXIBLE.CODIGO CODIGOVFL, TCS_TIPO_VALOR_FLEX.CODIGO TVFCOD, " + "TCS_TIPO_VALOR_FLEX.DESCRIPCION TVFDES, TCS_TIPO_VALOR_FLEX.VIGENCIA TVFVIG, " + 
			"TCS_VALOR_FLEXIBLE.DESCRIPCION VFDES, TCS_VALOR_FLEXIBLE.TVF_CODIGO VFTVFCOD, " + 
			" TCS_VALOR_FLEXIBLE.CODIGO_VALOR CODIGO_VALOR " + 
			"FROM paoyer.TCS_TIPO_VALOR_FLEX, paoyer.TCS_VALOR_FLEXIBLE " + "WHERE TCS_TIPO_VALOR_FLEX.CODIGO=" + 
			dominio + " AND " + "TCS_VALOR_FLEXIBLE.TVF_CODIGO=" + dominio + " " + 
			"AND TCS_VALOR_FLEXIBLE.VIGENCIA='S' " + "ORDER BY CODIGO_VALOR ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				ValorFlexibleVO valorfl = new ValorFlexibleVO();

				valorfl.setCodigotvfl(rs.getString("TVFCOD"));
				valorfl.setCodvfltvfl(rs.getString("VFTVFCOD"));
				valorfl.setDescripciontvfl(rs.getString("TVFDES"));
				valorfl.setDescripcionvf(rs.getString("VFDES"));
				valorfl.setVigenciatvfl(rs.getString("TVFVIG"));
				valorfl.setCodigovfl(rs.getString("CODIGOVFL"));
				valorfl.setCodigoValor(rs.getString("CODIGO_VALOR"));
				listaDominio.add(valorfl);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaDominio;
	}

	public List getDominioByCritera(String tipovfl, String nombre) {
		int dominio = Integer.parseInt(tipovfl.trim());
		List listaDominio = new LinkedList();

		String strSQL = 
			"SELECT TCS_VALOR_FLEXIBLE.CODIGO CODIGOVFL, TCS_TIPO_VALOR_FLEX.CODIGO TVFCOD, " + "TCS_TIPO_VALOR_FLEX.DESCRIPCION TVFDES, TCS_TIPO_VALOR_FLEX.VIGENCIA TVFVIG, " + 
			"TCS_VALOR_FLEXIBLE.DESCRIPCION VFDES, TCS_VALOR_FLEXIBLE.TVF_CODIGO VFTVFCOD, " + 
			"TCS_VALOR_FLEXIBLE.CODIGO_VALOR CODIGO_VALOR " + 
			"FROM paoyer.TCS_TIPO_VALOR_FLEX, paoyer.TCS_VALOR_FLEXIBLE " + "WHERE TCS_TIPO_VALOR_FLEX.CODIGO=" + 
			dominio + " AND " + "TCS_VALOR_FLEXIBLE.TVF_CODIGO=" + dominio + " " + 
			"AND TCS_VALOR_FLEXIBLE.VIGENCIA='S' " + "AND TCS_VALOR_FLEXIBLE.DESCRIPCION LIKE '%" + nombre + "%' " + 
			"ORDER BY CODIGOVFL";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				ValorFlexibleVO valorfl = new ValorFlexibleVO();

				valorfl.setCodigotvfl(rs.getString("TVFCOD"));
				valorfl.setCodvfltvfl(rs.getString("VFTVFCOD"));
				valorfl.setDescripciontvfl(rs.getString("TVFDES"));
				valorfl.setDescripcionvf(rs.getString("VFDES"));
				valorfl.setVigenciatvfl(rs.getString("TVFVIG"));
				valorfl.setCodigovfl(rs.getString("CODIGOVFL"));
				valorfl.setCodigoValor(rs.getString("CODIGO_VALOR"));
				listaDominio.add(valorfl);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return listaDominio;
	}

	public List GetTvflAtri(String codigo) {
		int iCodatri = Integer.parseInt(codigo.trim());
		List lista = new LinkedList();
		String strSQL = 
			"SELECT TTVF_CODIGO_DOMINIO, CAMPO_A1 FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE CODIGO=" + iCodatri + " ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {
				lista.add(rs.getString("TTVF_CODIGO_DOMINIO"));
				lista.add(rs.getString("CAMPO_A1"));
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return lista;
	}

	public List getAtriValidarLista(List lNombre, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lNombre.size();

		List lDominio = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String)lNombre.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "upper('" + b + "'),";
			} else {
				Parte2 = Parte2 + "upper('" + b + "'))";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = 
			"SELECT CODIGO, ETIQUETA, VALIDAR_LISTA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + sub + 
			" " + " AND NOMBRE " + Parte1 + " AND VALIDAR_LISTA='S' ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				lDominio.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return lDominio;
	}

	public List getError(List lError, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lError.size();

		List lErrores = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String)lError.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "'" + b + "',";
			} else {
				Parte2 = Parte2 + "'" + b + "')";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = 
			"SELECT CODIGO, ETIQUETA, VALIDAR_LISTA, ORDEN FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + 
			sub + " " + " AND NOMBRE " + Parte1 + " ";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));
				a1.setOrden(rs.getString("ORDEN"));
				lErrores.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return lErrores;
	}

	public List getAtriValidarLista2(List lNombre, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		int iTam = lNombre.size();

		List lDominio = new LinkedList();

		String Parte1 = "IN(";
		String Parte2 = "";
		for (int i = 0; i < iTam; i++) {
			String b = (String)lNombre.get(i);
			if (i < iTam - 1) {
				Parte2 = Parte2 + "'" + b + "',";
			} else {
				Parte2 = Parte2 + "'" + b + "')";
			}

		}
		Parte1 = Parte1 + Parte2;

		String strSQL = 
			"SELECT CODIGO, ETIQUETA, VALIDAR_LISTA FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE SBPR_CODIGO=" + sub + 
			" " + " AND VALIDAR_LISTA='S' AND TTVF_CODIGO_DOMINIO IS NULL";

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSQL, null, conn);
			while (rs.next()) {

				Atributo a1 = new Atributo();
				a1.setCodigo(rs.getString("CODIGO"));
				a1.setEtiqueta(rs.getString("ETIQUETA"));
				a1.setValLista(rs.getString("VALIDAR_LISTA"));

				lDominio.add(a1);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return lDominio;
	}

	public int InsertAtributo(String[] strArr, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSql = 
			"INSERT INTO TCS_BEN_SUBP_ATR_BENEFICIARIO (CODIGO, SBPR_CODIGO, " + "TIPO_ATRIBUTO, NOMBRE, DESCRIPCION, ORDEN, TIPO_DATO, LONGITUD, " + 
			"OBLIGATORIO, ETIQUETA, VALIDAR_LISTA, VIGENCIA, " + 
			"usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) " + 
			" VALUES(SCS_BEN_SAB.NEXTVAL," + sub + 
			",?,upper(?),upper(?),?,?,?,?,upper(?),?,'A',?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;

		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertAtributo2(String[] strArrAG, String strSubprograma) {
		int sub = Integer.parseInt(strSubprograma.trim());
		String strSql = 
			"INSERT INTO TCS_BEN_SUBP_ATR_BENEFICIARIO (CODIGO, SBPR_CODIGO, TIPO_ATRIBUTO, " + "NOMBRE, ORDEN, LONGITUD, OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, VALIDAR_LISTA, " + 
			"VIGENCIA, TTVF_CODIGO_DOMINIO, DESCRIPCION, TIPO_DATO, CAMPO_A2, " + 
			"usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) " + 
			" VALUES ( SCS_BEN_SAB.NEXTVAL," + sub + 
			",?,upper(?),?,?,?,upper(?),?,?,?,?,upper(?),?,?,?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoBien = 0;

		try {
			bInsertoBien = cf.execSql(strSql, strArrAG, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoBien;
	}

	public int InsertAtributoGenerico(String strCodigo, String strSubprograma, String[] strArr2) {
		int bInsertoBien = 0;
		String strSql = 
			"SELECT TIPO_ATRIBUTO, NOMBRE, DESCRIPCION, ORDEN, TIPO_DATO, " + "LONGITUD, OBLIGATORIO, ETIQUETA, VALOR_SUGERIDO, " + 
			"VALIDAR_LISTA, VIGENCIA, TTVF_CODIGO_DOMINIO, CAMPO_A2 " + "FROM TCS_BEN_ATR_GENERICO WHERE CODIGO=" + 
			strCodigo + " ";
		String strTipoAtributo;
		String strNombre;
		String strOrden;
		String strLongitud;
		String strObligatorio;
		String strEtiqueta;
		String strValidarLista;
		String strDescripcion;
		String strTipoDato;
		String strValorSugerido;
		String strVigencia;
		String strTVflCodigo;
		String strCampoA2;

		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				strTipoAtributo = rs.getString("TIPO_ATRIBUTO");
				strNombre = rs.getString("NOMBRE");
				strOrden = rs.getString("ORDEN");
				strLongitud = rs.getString("LONGITUD");
				strObligatorio = rs.getString("OBLIGATORIO");
				strEtiqueta = rs.getString("ETIQUETA");
				strValidarLista = rs.getString("VALIDAR_LISTA");
				strDescripcion = rs.getString("DESCRIPCION");
				strTipoDato = rs.getString("TIPO_DATO");
				strValorSugerido = rs.getString("VALOR_SUGERIDO");
				strVigencia = rs.getString("VIGENCIA");
				strTVflCodigo = rs.getString("TTVF_CODIGO_DOMINIO");
				strCampoA2 = rs.getString("CAMPO_A2");

				String strArrAG[] = 
				{ strTipoAtributo, strNombre, strOrden, strLongitud, strObligatorio, strEtiqueta, strValorSugerido, 
				  strValidarLista, strVigencia, strTVflCodigo, strDescripcion, strTipoDato, strCampoA2, strArr2[0], 
				  strArr2[1], strArr2[2], strArr2[3], strArr2[4], strArr2[5] };

				bInsertoBien = InsertAtributo2(strArrAG, strSubprograma);
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return bInsertoBien;
	}

	public int InsertTipoVFL(String[] strArr) {
		String strSql = 
			"INSERT INTO paoyer.TCS_TIPO_VALOR_FLEX (CODIGO, NOMBRE, " + "DESCRIPCION, VIGENCIA,CODIGO_VALOR_AUT, APL_CODIGO, " + 
			"usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) " + 
			" VALUES(paoyer.SCS_TIPO_VALOR_FLEX.NEXTVAL,upper(?),upper(?),?,'S',20,?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertAtributoGene(String[] strArr) {
		String strSql = 
			"INSERT INTO TCS_BEN_ATR_GENERICO(CODIGO, TIPO_ATRIBUTO, " + "NOMBRE, DESCRIPCION,ORDEN, TIPO_DATO, LONGITUD, OBLIGATORIO, " + 
			"ETIQUETA, VALIDAR_LISTA, VIGENCIA, " + 
			"usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica) " + 
			"VALUES(SCS_BEN_ATGE.NEXTVAL,?,upper(?),upper(?),?,?,?,?,upper(?),?,'A',?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int InsertValorVFL(String[] strArr, int codigo) {
		String strSql = 
			" INSERT INTO paoyer.TCS_VALOR_FLEXIBLE (CODIGO, NOMBRE, DESCRIPCION, VIGENCIA, TVF_CODIGO, " + " usuario_crea, fecha_crea, terminal_crea, usuario_modifica, fecha_modifica, terminal_modifica, CODIGO_VALOR) " + 
			" VALUES(paoyer.SCS_VALOR_FLEXIBLE.NEXTVAL,upper(?),upper(?),'S'," + codigo + 
			",?,to_date(?,'dd/mm/yyyy'),?,?,to_date(?,'dd/mm/yyyy'),?,?)";
		int bInsertoCorrectamente = 0;
		try {
			bInsertoCorrectamente = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int getCodigoTipoVFL() {
		int codigo = 0;
		String strSql = " SELECT MAX(CODIGO) CODIGO FROM paoyer.TCS_TIPO_VALOR_FLEX";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public int getOrdenAtriGene() {
		int codigo = 0;
		String strSql = " SELECT MAX(ORDEN) ORDEN FROM TCS_BEN_ATR_GENERICO";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo = rs.getInt("ORDEN") + 5;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public List CodMaxAtriGene() {

		List codigo = new LinkedList();
		String strSql = 
			" SELECT MAX(SAB.CODIGO) CODIGOATE, MAX(ATG.CODIGO) CODIGOATG " + "FROM TCS_BEN_ATR_GENERICO ATG, TCS_BEN_SUBP_ATR_BENEFICIARIO SAB";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				codigo.add(rs.getString("CODIGOATE"));
				codigo.add(rs.getString("CODIGOATG"));
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return codigo;
	}

	public int getOrden(String Orden, String Subprograma, String vigencia) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = 
			" SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE ORDEN=" + iOrden + " " + " AND SBPR_CODIGO=" + 
			iSubpro + " AND VIGENCIA = '" + vigencia + "'";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");

			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getOrden(String Orden, String Subprograma) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = 
			" SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE ORDEN=" + iOrden + " AND SBPR_CODIGO=" + iSubpro + 
			" ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return opcion;

	}

	public int getNombre(String Nombre, String Subprograma, String vigencia) {
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = 
			" SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE NOMBRE='" + Nombre + "' " + " AND SBPR_CODIGO=" + 
			iSubpro + " AND VIGENCIA = '" + vigencia + "'";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = 1;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getNombre(String Nombre, String Subprograma) {
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int opcion = 0;
		String strSql = 
			" SELECT NOMBRE FROM TCS_BEN_SUBP_ATR_BENEFICIARIO WHERE NOMBRE='" + Nombre + "' AND SBPR_CODIGO=" + 
			iSubpro + " ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = 1;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int getOrden2(String Orden, String Subprograma, String CodAtributo) {
		int iOrden = Integer.parseInt(Orden.trim());
		int iSubpro = Integer.parseInt(Subprograma.trim());
		int iCodatri = Integer.parseInt(CodAtributo.trim());
		int opcion = 0;
		String strSql = 
			" SELECT CODIGO FROM TCS_BEN_SUBP_ATR_BENEFICIARIO " + "WHERE ORDEN=" + iOrden + " AND SBPR_CODIGO=" + 
			iSubpro + " " + "AND CODIGO!=" + iCodatri + " ";
		ResultSet rs = null;
		try {
			rs = cf.getRecordsRset(strSql, null, conn);
			while (rs.next()) {
				opcion = rs.getInt("CODIGO");
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (rs != null) {
				try { rs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return opcion;
	}

	public int ActualizarValidarSisben(String strCodigoSubpro) {
		int actualizo = 0;
		int codsub = Integer.parseInt(strCodigoSubpro.trim());
		String strSql = " UPDATE TCS_BEN_SUBPROGRAMA SET VALIDAR_CONTRA_SISBEN='S' WHERE CODIGO=" + codsub + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarValidarMatricula(String strCodigoSubpro) {
		int actualizo = 0;
		int codsub = Integer.parseInt(strCodigoSubpro.trim());
		String strSql = " UPDATE TCS_BEN_SUBPROGRAMA SET VALIDAR_CONTRA_ESTUD='S' WHERE CODIGO=" + codsub + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtributo(String strCodigoAtri, int iCodigo, String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = 
			" UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET " + "TTVF_CODIGO_DOMINIO=" + iCodigo + ", " + "usuario_modifica = ?, " + 
			"fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtributoGene(int iCodigoAtri, int iCodigo, String[] strArrAct) {
		int actualizo = 0;
		String strSql = 
			"UPDATE TCS_BEN_ATR_GENERICO SET " + "TTVF_CODIGO_DOMINIO=" + iCodigo + ", " + "usuario_modifica = ?," + 
			"fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "terminal_modifica = ? " + "WHERE CODIGO=" + iCodigoAtri + 
			" ";
		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarAtriCampouno(String strCodigoAtri, int iCodigo) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = 
			" UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET TTVF_CODIGO_DOMINIO=" + iCodigo + " WHERE CODIGO=" + codatri + 
			" ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarCampoUno(int iCodAtriEsp, int iCodAtriGene) {
		int actualizo = 0;
		String strSql = 
			" UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET CAMPO_A1=" + iCodAtriGene + " WHERE CODIGO=" + iCodAtriEsp + 
			" ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActulizarValorSug(String strCodigoAtri, String strCodigoVFL, String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = 
			"UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET " + "VALOR_SUGERIDO=" + strCodigoVFL + ", " + "usuario_modifica = ?," + 
			"fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActulizarValorSugGene(int CodigoAtriGe, String strCodigoVFL) {
		int actualizo = 0;
		String strSql = 
			"UPDATE TCS_BEN_ATR_GENERICO SET " + "VALOR_SUGERIDO=" + strCodigoVFL + " WHERE CODIGO=" + CodigoAtriGe + 
			" ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarAtri(String strCodigoAtri, String[] strArrAct) {
		int actualizo = 0;
		int codatri = Integer.parseInt(strCodigoAtri.trim());
		String strSql = 
			"UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET " + "VIGENCIA = 'I', " + "usuario_modifica = ?," + "fecha_modifica = to_date(?,'dd/mm/yyyy'), " + 
			"terminal_modifica = ? " + "WHERE CODIGO=" + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, strArrAct, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ModificarAtriSub(Atributo Atri, String[] strArrAct) {
		int actualizo = 0;
		String strSql = 
			"UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET " + "NOMBRE = upper(?), " + "ORDEN = ?, " + "LONGITUD = ?, " + 
			"OBLIGATORIO = ?, " + "ETIQUETA = upper(?), " + "VALOR_SUGERIDO = ?, " + "VALIDAR_LISTA = ?, " + 
			"VIGENCIA = ?, " + "DESCRIPCION = upper(?), " + "usuario_modifica = ?," + 
			"fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "terminal_modifica = ? " + "WHERE CODIGO = " + 
			Atri.getCodatributo();
		String parArr[] = 
		{ Atri.getNombre(), Atri.getOrden(), Atri.getLongitud(), Atri.getObligatorio(), Atri.getEtiqueta(), 
		  Atri.getValorsugerido(), Atri.getValLista(), Atri.getVigencia(), Atri.getDescripcion(), strArrAct[0], 
		  strArrAct[1], strArrAct[2] };

		CallableStatement cs = null;
		try {
			actualizo = cf.execSql(strSql, parArr, conn);
			strSql = "{call PCS_CHANGE_DATA_TYPE('" + Atri.getTipodato() + "'," + Atri.getCodatributo() + ", ?)}";
			cs = conn.prepareCall(strSql);
			cs.registerOutParameter(1, Types.INTEGER);
			cs.execute();

			if (cs.getInt(1) != 1) {
				actualizo = -1;
			}

			strSql = 
					"{call PCS_CHANGE_ATRIBUTE_TYPE('" + Atri.getTipoatributo() + "'," + Atri.getCodatributo() + ",'" + 
					strArrAct[0] + "','" + strArrAct[2] + "', ?)}";
			cs = conn.prepareCall(strSql);
			cs.registerOutParameter(1, Types.INTEGER);
			cs.execute();

			if (cs.getInt(1) != 1) {
			} else {
				actualizo = -2;
			}
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		} finally {
			if (cs != null) {
				try { cs.close(); } catch (SQLException e) {
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
				}
			}
		}

		return actualizo;
	}

	public int ActualizarTvfDominio(String Atri) {
		int actualizo = 0;
		int codatri = Integer.parseInt(Atri.trim());
		String strSql = 
			"UPDATE TCS_BEN_SUBP_ATR_BENEFICIARIO SET " + "TTVF_CODIGO_DOMINIO='', " + "VALOR_SUGERIDO='', " + 
			"CAMPO_A1='' " + "WHERE CODIGO = " + codatri + " ";

		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarTvfDominioGene(String Atri) {
		int actualizo = 0;
		int codatri = Integer.parseInt(Atri.trim());
		String strSql = 
			"UPDATE TCS_BEN_ATR_GENERICO SET " + "TTVF_CODIGO_DOMINIO = '', " + "VALOR_SUGERIDO= '' " + "WHERE CODIGO = " + 
			codatri + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarDominio(String[] strArr, String Codigo) {
		int actualizo = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = 
			"UPDATE paoyer.TCS_TIPO_VALOR_FLEX SET " + "NOMBRE = upper(?), " + "DESCRIPCION = upper(?), " + "VIGENCIA = ?, " + 
			"usuario_modifica = ?," + "fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "TERMINAL_MODIFICA = ? " + 
			"WHERE CODIGO=" + codtvfl + " ";

		try {
			actualizo = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int ActualizarValorFlexible(String[] strArr, String Codigo) {
		int actualizo = 0;
		int codvfl = Integer.parseInt(Codigo.trim());
		String strSql = 
			"UPDATE paoyer.TCS_VALOR_FLEXIBLE SET " + "NOMBRE = upper(?), " + "DESCRIPCION = upper(?), " + "VIGENCIA = ?, " + 
			"usuario_modifica = ?," + "fecha_modifica = to_date(?,'dd/mm/yyyy'), " + "terminal_modifica = ?," + 
			"codigo_valor = ? " + "WHERE CODIGO=" + codvfl + " ";

		try {
			actualizo = cf.execSql(strSql, strArr, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarVFL(String Codigo) {
		int actualizo = 0;
		int codvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_VALOR_FLEXIBLE SET " + "VIGENCIA='N' WHERE CODIGO=" + codvfl + " ";
		try {
			actualizo = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return actualizo;
	}

	public int EliminarVFLTotal(String Codigo) {
		int bInsertoCorrectamente = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = "UPDATE paoyer.TCS_VALOR_FLEXIBLE SET " + "VIGENCIA='N' WHERE TVF_CODIGO=" + codtvfl + " ";

		try {
			bInsertoCorrectamente = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public int EliminarTVFLTotal(String Codigo) {
		int bInsertoCorrectamente = 0;
		int codtvfl = Integer.parseInt(Codigo.trim());
		String strSql = "DELETE FROM paoyer.TCS_TIPO_VALOR_FLEX WHERE CODIGO=" + codtvfl + " ";
		try {
			bInsertoCorrectamente = cf.execSql(strSql, null, conn);
		} catch (SQLException e) {
			System.err.println("/******** TDSUB - cwsub");
			e.printStackTrace();
			System.err.println("TDSSPE - cwsub ********/");
		}

		return bInsertoCorrectamente;
	}

	public Connection getConn() {
		return conn;
	}
}
